import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, OneToMany,OneToOne,CreateDateColumn } from 'typeorm';
import { Product } from './product.entity';
import { InventoryLog } from './inventory-log.entity';
import { Inventory } from './inventory.entity';

/**
 * 商品SKU实体
 * 描述：管理商品的具体规格型号，包含价格、库存等详细信息
 */
@Entity('product_sku')
export class ProductSku {
  @PrimaryGeneratedColumn()
  id: number;

  // 商品规格参数（JSON格式），例如：{"颜色":"红色","尺寸":"XL"}
  @Column('json')
  specifications: Record<string, string>;

  // 销售价格（十进制精度），单位：元
  @Column({ type: 'decimal', precision: 10, scale: 2 })
  price: number;

  // 当前库存数量，新建时默认为0
  @Column({ default: 0 })
  stock: number;

  // 关联所属商品（多对一关系）
  @ManyToOne(() => Product, (product) => product.skus)
  product!: Product;

  // 库存变更记录（一对多关系）
  @OneToMany(() => InventoryLog, (log) => log.sku)
  inventoryLogs: InventoryLog[];

  // 记录创建时间（自动生成）
  @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
  @CreateDateColumn()
  createdAt: Date;


  // 库存信息（一对一关系）
  @OneToOne(() => Inventory, inventory => inventory.sku)
  inventory!: Inventory;
}